package cn.suimg.neo4j.service;

import cn.suimg.neo4j.bean.Album;
import cn.suimg.neo4j.bean.Singer;
import cn.suimg.neo4j.bean.SingerImage;
import cn.suimg.neo4j.bean.Song;
import cn.suimg.neo4j.dto.DownloadFile;

import java.util.List;

public interface MusicService {

    /**
     * 通过歌曲搜索歌手写真
     * @param hash 歌曲哈希值
     * @return
     */
    List<SingerImage> searchSingerImage(String hash);

    /**
     * 通过歌手ID搜索歌手写真
     * @param singerId 歌手ID
     * @return
     */
    List<SingerImage> searchSingerImage(int singerId);

    /**
     * 通过歌手ID搜索歌手写真
     * @param singerId
     * @param isMobile
     * @return
     */
    List<SingerImage> searchSingerImage(int singerId,Boolean isMobile);

    /**
     * 查询歌手信息
     * @param singerId 歌手ID
     * @return
     */
    Singer getSingerInfo(Integer singerId);

    /**
     * 获取专辑信息
     * @param albumId
     * @return
     */
    Album getAlbumById(Integer albumId);

    /**
     * 获取歌曲信息
     * @param songId
     * @return
     */
    Song getSongById(Integer songId);


    /**
     * 查询歌手的专辑列表
     * @param singerId
     * @return
     */
    List<Album> getSingerAlbumList(Integer singerId);

    /**
     * 查询专辑内的歌曲列表
     * @param albumId
     * @return
     */
    List<Song> getAlbumSongList(Integer albumId);

    /**
     * 添加歌手所有的数据
     * @param singerId
     */
    void addSingerFullData(Integer singerId);

    /**
     * 添加歌单分享数据
     * @param url
     */
    void addSongListShareData(String url);

    /**
     * 查询出未处理的歌手ID
     * @return
     */
    List<Integer> getUnprocessedSingerIdList();


    String downloadSingerImagesZip(Integer singerId);


    List<DownloadFile> getSingerFullData(Integer singerId);

}
